package ctrFinanceiro.dao;

import java.util.List;
import java.util.Set;

import ctrFinanceiro.dmp.Conta;
import ctrFinanceiro.dmp.TipoCategoria;
import ctrFinanceiro.iface.IDAO;

public class ContaDAO implements IDAO<Conta, Integer> {

	public ContaDAO() {
	}

	@Override
	public void incluir(Conta conta) {
		Persistencia.persist(conta);
	}

	@Override
	public void atualizar(Conta conta) {
		Persistencia.update(conta);
	}

	@Override
	public void remover(Conta conta) {
		Persistencia.delete(conta);
	}

	@Override
	public Conta buscarPorId(Integer id) {
		return (Conta) Persistencia.findById(Conta.class, id);
	}

	public Conta getContaPorDescricao(String descricao) {
		return (Conta) Persistencia.find("Conta.findByDescricao",
				new Object[] { descricao });
	}

	@SuppressWarnings("unchecked")
	public List<Conta> getContas(Integer id) {
		return (List<Conta>) Persistencia.getLista("Conta.findAll",
				new Object[] { id });
	}

	public List<Conta> getContasPorTipoCategoria(Integer id, TipoCategoria ...tipos ) {
		if (tipos.length == 1) {
			return (List<Conta>) Persistencia.getLista("Conta.findBy1TipoCategoria", new Object[]{id, tipos[0]});
		} else {
			return (List<Conta>) Persistencia.getLista("Conta.findBy2TipoCategoria", new Object[]{id, tipos[0], tipos[1]});
		}
	}


}
